package com.project.yuepai.util;


import com.project.yuepai.dto.MessageBean;

/**
 * Author: Lai
 * Mail:3217672376@qq.com
 * Date:2021/6/5.
 * Time:22:47.
 */
public class MessageUtil {

    private final static Integer CODE_SUCCESS = 200;         //请求成功代码

    private final static String MSG_SUCCESS = "操作成功";   //CODE_SUCCESS 对应的提示信息

    private final static Integer CODE_FAILURE_NORMAL = 201;  //正常情况下请求成功，但数据或逻辑有误代码

    private final static String MSG_FAILURE_NORMAL = "操作失败"; //CODE_FAILURE_NORMAL 对应的提示信息

    private final static Integer CODE_FAILURE_FRONT = 100;  //前端错误代码

    private final static String MSG_FAILURE_FRONT = "客户端系统出错"; //CODE_FAILURE_NORMAL 对应的提示信息

    private final static Integer CODE_FAILURE_BACK = 500;  //正常情况下请求成功，但数据或逻辑有误代码

    private final static String MSG_FAILURE_BACK = "系统出错"; //CODE_FAILURE_NORMAL 对应的提示信息

    private final static Integer CODE_DATA_UPDATE_FAILURE = 501;  //正常情况下请求成功，但数据或逻辑有误代码

    private final static String MSG_DATA_UPDATE_FAILURE = "数据更新出错"; //CODE_DATA_UPDATE_FAILURE 对应的提示信息

    private final static Integer VALID_FAILURE = 400;  //数据验证失败

    private final static String MSG_VALID_FAILURE = "您输入的数据不合法，请输入合法数据"; //VALID_FAILURE 对应的提示信息

    private final static Integer CONTROLLER_VALID_FAILURE = 402;  //controller层参数验证失败


    /**
     * 公共
     * @param status
     * @param message
     * @param data
     * @return
     */
    public static MessageBean common(Integer status, String message , Object data){
        return new MessageBean(status,message,data);
    }

    /**
     * 请求成功
     * @param message
     * @param data
     * @return
     */
    public static MessageBean success(String message , Object data){
        return common(CODE_SUCCESS,message,data);
    }
    public static MessageBean success(String message){
        return  success(message,null);
    }
    public static MessageBean success(Object data){
        return  success(MSG_SUCCESS,data);
    }
    public static MessageBean success(){
        return  success(MSG_SUCCESS,null);
    }


    /**
     * 正常错误
     * @param message 消息
     * @param data 数据
     * @return
     */
    public static MessageBean failure(String message ,Object data){
        return common(CODE_FAILURE_NORMAL,message,data);
    }
    public static MessageBean failure(String message ){
        return common(CODE_FAILURE_NORMAL,message,null);
    }
    public static MessageBean failure(Object data){
        return  failure(MSG_FAILURE_NORMAL,data);
    }
    public static MessageBean failure(){
        return  failure(MSG_FAILURE_NORMAL,null);
    }

    /**
     * 客户端系统错误
     * @param message  提示信息
     * @param data 数据
     * @return MessageBean
     */
    public static MessageBean failureFront(String message ,Object data){
        return common(CODE_FAILURE_FRONT,message,data);
    }
    public static MessageBean failureFront(Object data){
//        return failureFront(data);//如果是这个，那就会不断的调用，处于死循环
        return  common(CODE_FAILURE_FRONT,MSG_FAILURE_FRONT,null);
    }

    public static MessageBean failureFront(String message ){
        return common(CODE_FAILURE_FRONT,message,null);
    }
    public static MessageBean failureFront(){
        return  common(CODE_FAILURE_FRONT,MSG_FAILURE_FRONT,null);
    }


    /**
     * 后端端系统错误
     * @param message  提示信息
     * @param data 数据
     * @return MessageBean
     */
    public static MessageBean failureBack(String message ,Object data){
        return common(CODE_FAILURE_BACK,message,data);
    }
    public static MessageBean failureBack(String message ){
        return common(CODE_FAILURE_BACK,message,null);
    }
    public static MessageBean failureBack(Object data){
        return  failureBack(MSG_FAILURE_BACK,data);
    }
    public static MessageBean failureBack(){
        return  failureBack(MSG_FAILURE_BACK,null);
    }


    /**
     * 后端端更新数据错误
     * @param message  提示信息
     * @param data 数据
     * @return MessageBean
     */
    public static MessageBean failureDataUpdate(String message ,Object data){
        return common(CODE_DATA_UPDATE_FAILURE,message,data);
    }
    public static MessageBean failureDataUpdate(String message ){
        return common(CODE_DATA_UPDATE_FAILURE,message,null);
    }
    public static MessageBean failureDataUpdate(Object data){
        return  common(CODE_DATA_UPDATE_FAILURE,MSG_DATA_UPDATE_FAILURE,data);
    }
    public static MessageBean failureDataUpdate(){
        return  common(CODE_DATA_UPDATE_FAILURE,MSG_DATA_UPDATE_FAILURE,null);
    }

    /**
     * 验证失败 返回400
     * @param data 可能需要返回的数据
     * @return
     */
    public static MessageBean failureValid(String data){
        return common(VALID_FAILURE,MSG_VALID_FAILURE,data);
    }
    public static MessageBean failureValid(){
        return common(VALID_FAILURE,MSG_VALID_FAILURE,null);
    }

}
